如何导出熊掌记 Bear 中的笔记

熊掌记 Bear 是一款 macOS 下基于 Markdown 的笔记软件,颜值很高,很轻量。

但是最近熊掌记 Bear 会员到期,续费时发现会员价格涨价了,所以想看一下如何批量将熊掌记 Bear 中的笔记和附件全部导出。探究实践一番,发现还是可行的。

下面就来看看,无需会员,一键将所有熊掌记笔记和附件导出。

Bear 中的笔记存储在哪里

根据官方文档 熊掌记的笔记储存在哪里,Bear 的笔记存储在 ~/Library/Group Containers/9K33E3U3T4.net.shinyfrog.bear/Application Data/ 文件夹,查看此文件夹,包含 sqlite 数据库文件和 Local Files 文件夹。

  • sqlite 数据库中有笔记、密码、标签等数据库表;
  • Local Files 文件夹下有笔记的图片和文件等附件;

读取数据库

使用 Python 中的 sqlite3 读取数据库。

ZSFNOTE 是保存笔记的表,这个表中有以下关键字段:

  • ZTITLE:标题
  • ZSUBTITLE:子标题
  • ZTEXT:笔记内容
  • ZCREATIONDATE:创建时间
  • ZMODIFICATIONDATE:修改时间
  • ZTRASHED:是否在废纸篓
  • ZTRASHEDDATE:放进废纸篓时间
import sqlite3 as db
def read_sqlite(db_path, exectCmd):
    conn = db.connect(db_path)
    cursor = conn.cursor()
    conn.row_factory = db.Row
    cursor.execute(exectCmd)
    rows = cursor.fetchall()
    return rows

notes = read_sqlite(
        sqlite_file, "SELECT ZTITLE, ZSUBTITLE, ZTEXT, ZCREATIONDATE, ZMODIFICATIONDATE, ZTRASHED, ZTRASHEDDATE FROM " + note_table_name + ";")

for note in notes:
    title = note[0]
    content = note[2]
    is_trashed = note[5]

    print("笔记:" + title + ",是否在废纸篓:" + str(is_trashed == 1))

在此就找到了笔记内容,我们可以直接将 content 内容保存到文件中,以 .md 结尾即可得到笔记的内容。

除此之外,还有笔记中的图片和文件需要找到,不然我们无法查看这些图片和文件。

查找并复制笔记的附件

笔记的附件保存在上面提到的 Local Files 文件夹下,这些文件的文件名和笔记中引用的文件是一致的。

笔记中引入附件通常采用 ![这是一个图片](path/to/pic.png) 的形式,所以我们可以对笔记内容使用正则表达式 r'\[.*\]\(.*\)' 来进行匹配,得到所有附件。

然后用匹配到的附件文件名,去和 Local Files 文件夹下的文件做匹配即可找到对应文件,复制到我们需要的文件夹下,然后将笔记原引用地址替换为新地址即可。

for note in notes:
    title = note[0]
    content = note[2]
    is_trashed = note[5]

    print("笔记:" + title + ",是否在废纸篓:" + str(is_trashed == 1))

    matches = re.findall(file_pattern, content)
    for match in matches:
        left_index = match.index("(") + 1
        file_name = match[left_index:-1]
        for file in all_files:
            if file_name in file:
                shutil.copy(file, resource_total_dir + file_name)
                content = content.replace(file_name, resource_dir + file_name)
                break

    save_to_file(bear_total_dir + title + ".md", content)

这样我们就将熊掌记 Bear 中的笔记和附件全部保存为 Markdown 格式了,你可以在 Github 的 note_exporter 中找到完整的代码。

Copyright © qingeneral.github.io 2023 all right reserved,powered by Gitbook该文章修订时间: 2024-07-07 23:08:22

results matching ""

    No results matching ""